{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Introduction\n",
    "This notebook indicates how to use third party software in order to obtain automatic differentiation. In this notebook we will use Google's AD software \"tangent\", which can be found as a git repository at https://github.com/google/tangent or installed using pip: pip install tangent\n",
    "\n",
    "For solving a slightly compressible flow problem, see also the slighly compressible tutorial.\n",
    "\n",
    "This is just a temporary experimental code, and usage and/or derivations from it should be done with care!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Model\n",
    "As an example, we will set up a non-linear problem for compressible flow. As usuall, we assume Darcy's law is valid:\n",
    "$$\n",
    "\\vec u = \\mathcal K \\nabla p,\n",
    "$$\n",
    "where $\\vec u$ is the flux, $\\mathcal K$ the permeability tensor and $p$ the fulid pressure. Further, the conservation of mass gives\n",
    "$$\n",
    "\\frac{\\partial \\phi \\rho}{\\partial t} + \\nabla \\cdot \\rho \\vec u = q,\\quad \\text{in}\\ \\Omega \\\\\n",
    "u\\cdot n = 0,\\quad \\text{on}\\ \\partial \\Omega\n",
    "$$\n",
    "for porosity $\\phi$, fluid density $\\rho$, and source/sink term $q$.\n",
    "\n",
    "To solve this system of equation we need a constitutive law relating the fluid density to the pressure:\n",
    "$$\n",
    "\\rho = \\rho_r e^{c(p - p_r)},\n",
    "$$\n",
    "for reference density $\\rho_r$ and pressure $p_r$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Import statements"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Third party software\n",
    "import tangent\n",
    "\n",
    "# Porepy modules\n",
    "from porepy.grids import structured\n",
    "from porepy.numerics.fv import tpfa\n",
    "from porepy.params.data import Parameters\n",
    "from porepy.viz.plot_grid import plot_grid"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Define constitutive laws and constants\n",
    "We create the grid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create grid\n",
    "gb = structured.CartGrid([11,11])\n",
    "gb.compute_geometry()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We set the porosity to 0.2 and let set the permeability to the default value (i.e. $\\mathcal K = 1$).\n",
    "We define the depenecy of $\\rho$ on $p$ as a function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define data\n",
    "dt = 0.2                           # Time step\n",
    "phi = 0.2                          # Porosity \n",
    "c = 1e-1                           # Compressibility\n",
    "\n",
    "# Set data\n",
    "data = {'param': Parameters(gb)}\n",
    "data['param'].set_porosity(phi)\n",
    "\n",
    "# Constitutive law\n",
    "def rho(p):\n",
    "    rho0 = 1\n",
    "    p_ref = 1\n",
    "    return rho0 * np.exp(c * (p - p_ref))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Discretization\n",
    "We create discretized versions of the operators div. div is a mapping from faces to cells, and the divergence at a cell is the sum of the values on the faces (possibly multiplied with -1 if the normal vector of the face points into the cell).\n",
    "\n",
    "The density is defined at the cell centers, but in the divergence term we need to evaluate it at the faces. To do so, we will simply take the average of the two neighbooring cells."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "cell_faces = gb.cell_faces.A\n",
    "\n",
    "def div(x):\n",
    "    \"\"\"\n",
    "    Discrete divergence\n",
    "    \"\"\"\n",
    "    return np.dot(cell_faces.T, x)\n",
    "\n",
    "def avg(x):\n",
    "    \"\"\"\n",
    "    Averageing. Note that this is not strictly correct for the boundary faces since\n",
    "    these only have 1 cell neighboor, but we have zero flux condition on these, so \n",
    "    this is not a problem.\n",
    "    \"\"\"\n",
    "    return 0.5 * np.dot(np.abs(cell_faces), x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Flux discretization\n",
    "To discretize the flux operator $-\\mathcal K \\nabla$ we use the two point flux apporoximation. This is implemented as the class Tpfa in PorePy. When we call Tpfa.discretize(...) we will store the dizcretisation as a scipy matrix in the data dictionary with a keyword 'flux'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define flux discretization:\n",
    "flx_disc = tpfa.Tpfa('flow')\n",
    "# Discretize\n",
    "flx_disc.discretize(gb, data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Residual function and Jacobian\n",
    "We insert Darcy's law into the mass conservation, and write this on residual form. We use backward Euler to discretize in time. This gives us the residual\n",
    "$$\n",
    "\\phi \\frac{\\rho^k - \\rho^{k-1}}{\\Delta t} - \\text{div}(\\text{avg}(\\rho^k)\\ u^k) - q^k = 0\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In python code this we can write this as"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def f(p, p0):\n",
    "    # darcy:\n",
    "    u = data['flux'] * p\n",
    "\n",
    "    # Source:\n",
    "    src = np.zeros(gb.num_cells)\n",
    "    src[60] = 1\n",
    "\n",
    "    # Define residual function\n",
    "    time = phi * (rho(p) - rho(p0)) / dt\n",
    "    flux = div(avg(rho(p)) * u)\n",
    "    lhs = time + flux\n",
    "    rhs = src\n",
    "\n",
    "    return lhs - rhs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We define a automatic differential object using the third party module tangent and build the jacobian using this."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "dfdx = tangent.autodiff(f)\n",
    "def J(p, p0):\n",
    "    J = np.zeros((p.size, p.size))\n",
    "    direction = np.zeros(p.size)\n",
    "    for i in np.arange(p.size):\n",
    "        direction[i] = 1\n",
    "        J[:, i] = dfdx(p, p0, direction)\n",
    "        direction[i] = 0\n",
    "    return J"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Time loop\n",
    "We are now ready to set up the time loop. We will set up a simple Newton iteration to find the zero of the residual function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Solving time step:  1\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n5v3ZnDlzvIF+3rx5Mnr0aO+6t956S+Lj4729wLKyMgHk+++/FxFPAK17jJ9//rlERUWJ0+m0HEC/\n++47iY6O9v4RERF59dVXZeTIkWc8lroBUUTk2Wef9daXl5cn6enpp2z/8MMPy8033ywiIj169JC3\n337bu27t2rXSrVs3EfEE0NjY2J8cc15ennf7rKwseeONN0REpG/fvvLBBx941x08eFBsNpv3j++Z\nAujpbattr9vtFhGRIUOGyN///vczHncL1KTglAGy3MclVAG0Vd2AOffccykpKWnw3tPXX3/Nvffe\nS35+PpWVlTidToYMGXLKNunp6Y3Wc+jQIe/nQYMGUVpaygcffMCMGTN8Kuvo0aM4nc5T1nfr1q3B\nOr/++ut61x88eJCOHTvSrl27U8rLz8/3fu7SpYv333FxcSQmJhIZGen9DJ6HXO3bt/9J27t164bD\n4aCkpNH77j+xb98+HA4HycnJ3p+53e56v5uDBw+esq7uv/ft28fBgwe9bQRwuVxccskl3n3rfo/d\nunXj4MGD3s/nnnvuT4759O+lvLzcW9eECROIiPjxWWxkZCSHDx+u91hPP6acnBzatGnDxx9/THJy\nMt988w3jx4+vd//WpPYpfDhrVU/hhw0bRkxMDG+++Wa928ycOZO+ffuye/duysrKePjhhz1d9To8\ns73qd9lll/Hee+9RUVHRaJvqK6tTp07YbDYOHDjg/dn+/fvrLWf06NFs2bKFoqKiM65PSUnh+PHj\nnDhx4pTyUlNTG21jfU5vW1RUFImJicTHx1NZ+eMcEpfLxdGjR72fTz/m9PR0YmJiKCkpobS0lNLS\nUsrKyvj888/PWG9ycvIpx1m3Henp6WRkZHjLKS0t5cSJE7zzzjuA53vYt2/fKe1OSUnx6/jT09NZ\ns2bNKXXZ7XZSU1PrPa9n+vm0adNYvnw5r7zyCrm5ucTGxvrVnrNNIJ/CB0urCqAJCQn84Q9/4O67\n7+bNN9+ksrISh8PBmjVruO+++wDP8KNzzjmHtm3b8uWXX/LMM880Wm6XLl1OGbt50003kZyczIQJ\nE9i5cyculwu73X5Kb68xkZGRTJw4kYceeojKykp27drFSy+9VO/2o0eP5vLLL2fChAls27YNp9PJ\niRMnWLJkCS+88ALp6elcfPHF3H///djtdj777DOef/75Jg0nWr58Obt27aKyspIHH3yQ3NxcIiMj\n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\nqWr4awAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f5bfbddcef0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Solving time step:  2\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nAsOYNIAqFQZq3r40c+ZMIiIimDVrFv/1X/91xjYvv/wyhYWFREdHc/DgQbKzs9m3b1+IetxIXD4u\nIaIBVKkwsGnTJi666CLmzJnD6tWrefTRR1m+fDk7duzwbrNixQpuvvlm8vPz2b17NydPnuShhx4K\nYa+DrGYuvC9LiGgAVSoMFBcXExMT432FXVlZGaWlpQwZMsR7OV9cXMz1119PixYtsNlstGrVii1b\ntmCM8ekdo02OXsIrpXxVUVFBeno6LpeL119/nczMTC6//HJmzZpFx44dOXLkyBnbl5WVUVVVRbdu\n3bxTPW+++eYQ9T4IaoYx6SW8UqouqamplJSUAJ7L+cTERFJSUvj888/5zW9+w5133klFRQVr164F\n4LXXXqO8vJyZM2fyww8/sGjRIr766ivmzZsXyt0IvAC9jSlYdBiTUmFg4MCBHDlyhO+++459+/ZR\nUlJCREQE7du3p2/fvrz55puICFOnTuXjjz9mxYoVtG/fnn379pGSkkJFRQXDhg2jtLQUl8vF3Llz\nm/48+iYwjEnnwisVJv75z38ybtw4EhMT6dixI0ePHqVFixZcc801LF68mO7du1NQUIDb7SYuLo7V\nq1fzzDPPsGXLFioqKkhISODSSy+loKCAH374gby8PDIzM0O5Sw2bCx+TJaT6eG93j77OTqlm7brr\nrmPFihXExcXxzTffcMUVVzB48GA+//xz4uPjGTlyJElJSRhjsNvtjBgxgn/+85/ed4pedNFFfPDB\nB7z00kv06NGDadOmhXqXGiaAeeGDRQOoUmFk9OjR7Nmzhw4dOpCTk+O9nB80aBAtW7ZkypQppKSk\ncO+991JdXc2dd95J9+7deeuttygoKMDlcnHjjTeyePFiSktLOXjwYKh3qWE0gCqlrKh5mfLMmTP5\n9NNP6du3L4mJicybN4/4+Pgztr3++uspLS3lgw8+oG3btrRu3Zo333yTW265hbS0NIqLi0O0FwGg\nw5iUUv4YPXo0O3fuZMWKFWzdupXly5fzm9/8hilTplBaWkpZWRkAI0eO5Oabb+aFF16guLiYe++9\nl1GjRmG326murg7xXjRQAIcxGWNeMcYcNsacM0ujMaanMWaDMabKGPNbX7uoT+GVCmM1l/QXX3wx\nN998M9XV1TidTmbMmAF43l/7zDPP8PXXX1NZWUmPHj34+uuvsdvtHD58uGknogvsU/jFwHzg9VrW\nHwN+A1xvpVI9A1UqzJ2eH2nEiBEkJibSu3dvHnvsMd59910Ann76aQ4dOsTdd9/NhAkTmDFjBomJ\niWekUFmwYAH9+vWjX79+dOnShWHDhoVql3zjxvNCZV+WeojIWjxBsrb1h0VkMxZvCGgAVaoJGD16\nNAMGDMDhcHDs2DHS0tLo1KkTBw4c8KZJ3rFjB7fccgvl5eUsWrSIF1544Yw67rnnHrZu3crmzZtJ\nS0vjgQceCNHeWBDmM5F0HKhSzcy9995L27ZtmT17drCbatg4UJMl4Oscf7MPKDntBwtFZOGZ9ZnO\nwEoR6VN7m+ZxoFxE/uJLq3oPVKlmZPHixezbt4/58+eHuiuBVqJJ5ZRSQbNlyxb+8pe/8NlnnxER\noXfvAkEDqFLNxPz58zl27Jj34VFWVhaLFi0Kca8ahzFmGTAUSDLGFAGzgCgAEVlgjOmA537BBYDb\nGHM/0EtEyuqsV++BKqWCpIH3QDMF1vm4dQvNC6+UUj+pmYoUvjSAKqXCVPi/z04DqFIqTOkZqFJK\n+UkDqFJK+UnwaZ5mCGkAVUqFKb0HqpRSftJLeKWU8pOegSqllJ/0DFQppfykZ6BKKeWnmjcqhy8N\noEqpMKWX8Eop1QB6Ca+UUn7QM1CllPKTBlCllPKTPoVXSik/6VN4pZTyk17CK6WUn8L/El5T8yml\nwlTNGagvS92MMa8YYw4bY7bXst4YY543xuwyxnxpjMn0pYcaQJVSYarmDNSXpV6LgVF1rP8l0P3U\nchfwoi+V6iW8UipMBe4hkoisNcZ0rmOTXwOviydNcZ4xppUxJllEDtZVr9UA2qA0pUop5buDH8Dj\nST5uHGuMyT/t80IRWWihsVSg8LTPRad+FtAAqpRSjUJE6rrkDgt6D1QppaAYSD/tc9qpn9VJA6hS\nSsG7wK2nnsZfDvxY3/1P0Et4pVQzYIxZBgwFkowxRcAsIApARBYA7wOjgV1ABXC7T/V6HjoppZSy\nSi/hlVLKTxpAlVLKTxpAlVLKTxpAlVLKTxpAlVLKTxpAlVLKTxpAlVLKT/8/khWz7dVupJQAAAAA\nSUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f5bfbb857f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Solving time step:  3\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f5bf2260160>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Solving time step:  4\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n/wOa6lLFSC7w6wAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f5bfbbc7e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Solving time step:  5\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f5bfbc7a908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Set initial condition\n",
    "p0 = np.ones(gb.num_cells)\n",
    "p = p0\n",
    "\n",
    "# define iteration parameters\n",
    "newton_tol = 1e-6\n",
    "t = .0\n",
    "T = 1\n",
    "k = 0\n",
    "times = [t]\n",
    "\n",
    "# Time loop\n",
    "while t < T:\n",
    "    # Increment time\n",
    "    t += dt\n",
    "    k += 1\n",
    "    times.append(t)\n",
    "    p0 = p\n",
    "    print('Solving time step: ', k)\n",
    "    # solve newton iteration\n",
    "    err = np.inf\n",
    "    while err > newton_tol:\n",
    "        pI = np.atleast_2d(p).repeat(p.size, axis=0)\n",
    "        p0I = np.atleast_2d(p0).repeat(p0.size, axis=0)        \n",
    "        p = p - np.linalg.solve(J(p, p0).T, f(p, p0))\n",
    "        err = np.sqrt(np.sum(f(p, p0)**2))\n",
    "    plot_grid(gb, p,color_map = [1., 1.8])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
